Multimedia devices, such as video game consoles, have traditionally provided an operating system that “gets out of the way” of the developer. In particular, in conventional video game consoles the game developers are provided with near total control of the hardware and the operating system is driven by the multimedia application. As game software is often developed for a particular platform, the available hardware resources (e.g., memory, processor speed, etc.) are well known. This architecture provides developers complete autonomy and insight into how every CPU cycle is used. Thus, software developers can manage and maximize the usage of the hardware resources and provide a high performance multimedia application. There is a significant drawback to this approach in that system services are severely constrained and require explicit direction by the application. This direction is necessary because there is only one application running on the system at any point in time (i.e., the multimedia application). Another drawback is because each application provides its own interface to system resources, the user's experience may differ significantly from application to application. Yet another drawback is that the operating system functionality cannot be updated over time in conventional multimedia devices.
The other end of the continuum of resource control is found in the conventional personal computer (PC), in which applications typically have limited control over the underlying functionality of the operating system. This approach provides a large amount of functionality in the operating system, without requiring that it be controlled by the application. Further, this provides for multiple applications to run simultaneously without requiring them to be aware of each other. The drawback of this approach is that an application has much less control over system resources, such as CPU cycles, RAM, network bandwidth, etc., and has to be architected to assume that it is not the only application running.
As multimedia devices grow in power there will be a greater demand to provide system services to applications while maintaining the benefits of existing multimedia console operating systems where developers have almost full control of system resources. Thus, there is a need for a system and method of providing system services in a multimedia device to enable more functionalities, while maintaining an application's high level of control over the operating system and hardware resources. The present invention provides such a solution.